const { User } = require('../model')
const { sign } = require('../util/jwt')
const { jwtSecret } = require('../config/config.deafult')

/**
 * 用户登录
 */
exports.login = async (req, res, next) => {
  try {
    // 请求验证
    const user = req.user.toJSON()
    // 生成 token
    const token = await sign({
      userId: user._id
    }, jwtSecret)
    // 发送响应数据
    delete user.password
    console.log(typeof token)
    res.status(200).json({
      ...user,
      token
    })

  } catch (err) {
    next(err)
  }
}

/**
 * 用户注册
 */
exports.register = async (req, res, next) => {
  try {
    // 1. 获取请求体数据
    console.log(req.body)
    // 2. 数据验证
    // 2.1. 基本数据验证
    // 2.2. 业务数据验证
    // 5. 验证通过，将数据保存数据库
    let user = new User(req.body.user)
    await user.save()
    user = user.toJSON()
    delete user.password

    // 6. 发送成功响应
    res.status(201).json({
      user
    })
  } catch (err) {
    next(err)
  }
}

/**
 * 获取当前登录用户
 */
exports.getCurrentUser = async (req, res, next) => {
  try {
    res.send('post /users')
  } catch (err) {
    next(err)
  }
}

/**
 * 更新当前登录用户
 */
exports.updateCurrentUser = async (req, res, next) => {
  try {
    res.send('put /user')
  } catch (err) {
    next(err)
  }
}